/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package vip.xiaonuo.device.modular.service.impl;

import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Service;
import vip.xiaonuo.device.modular.mapper.CabinetInfoMapper;
import vip.xiaonuo.device.vo.CabinetDoorVO;
import vip.xiaonuo.device.vo.CabinetInfoVO;
import vip.xiaonuo.device.vo.Result;

import javax.annotation.Resource;
import java.util.List;

/**
 * 柜子信息Service接口实现类
 *
 * @author kongxm
 * @date 2022/11/12 22:02
 **/
@Service("deviceCabinetInfoService")
public class DeviceCabinetInfoServiceImpl extends DeviceBaseService {
    @Resource
    private CabinetInfoMapper cabinetInfoMapper;

    @Override
    protected Integer getReqType() {
        return null;
    }

    @Override
    protected Boolean getLogFlag() {
        return false;
    }

    @Override
    protected Result handle(JSONObject param) {
        String cabinetGroupId = param.getString("cabinetGroupId");
        String cabinetId = param.getString("cabinetId");
        List<CabinetInfoVO> list = cabinetInfoMapper.queryCabinetList(cabinetGroupId, cabinetId);
        for (CabinetInfoVO item : list) {
            int goodsCategoryCount = 0;
            int goodsTotalCount = 0;
            int inCabinetCount = 0;
            int outCabinetCount = 0;
            int maintainWasteCount = 0;
            int notBelongToCabinet = 0;
            for (CabinetDoorVO door : item.getDoorList()) {
                goodsCategoryCount = goodsCategoryCount + door.getGoodsCategoryCount();
                goodsTotalCount = goodsTotalCount + door.getGoodsTotalCount();
                inCabinetCount = inCabinetCount + door.getInCabinetCount();
                outCabinetCount = outCabinetCount + door.getOutCabinetCount();
                maintainWasteCount = maintainWasteCount + door.getMaintainWasteCount();
                notBelongToCabinet = notBelongToCabinet + door.getNotBelongToCabinet();
            }
            item.setGoodsCategoryCount(goodsCategoryCount);
            item.setGoodsTotalCount(goodsTotalCount);
            item.setInCabinetCount(inCabinetCount);
            item.setOutCabinetCount(outCabinetCount);
            item.setMaintainWasteCount(maintainWasteCount);
            item.setNotBelongToCabinet(notBelongToCabinet);
        }
        return Result.ok(list);
    }
}
